﻿/*
static 成员
1、static修饰的成员变量称为静态成员变量，静态成员变量一定要在类外进行初始化
2、静态成员变量不在某一个对象中，它在静态区中，属于全局变量，不属于某一个对象
3、static修饰的函数称为静态成员函数，静态成员函数没有隐含的this指针
4、因为没有this指针的缘故，静态成员函数无法访问其它非静态成员，只能访问静态成员，这也是它的作用
5、非静态的成员函数可以访问任意在类中的成员，包括静态成员
6、突破类域即可访问静态成员，可以通过类名::静态成员 或者 对象.静态成员 来访问静态成员变量
和静态成员函数
7、静态成员也是类成员，同样受访问修饰符限定（public，private，protect）
8、静态成员变量不能在声明位置给缺省值初始化，因为缺省值是走构造函数初始化列表的，静态成员
变量不属于某个对象，不⾛构造函数初始化列表
*/
#include<iostream>
using namespace std;
class Date {
public:
	Date(int year = 2024, int month = 9, int day = 13)
		:_year(year)
		, _month(month)
		, _day(day)
	{}
	static int GetTime() {
		return time;
	}
private:
	int _year = 1997;
	int _month = 6;
	int _day = 1;
	static int time;
};
int Date::time = 1;//类外初始化
void test() {
	cout << Date::GetTime() << endl;//类外利用静态函数访问私有静态变量
}